package br.com.requisicao.compra.dao.impl;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Order;

import br.com.requisicao.compra.canonico.UnidadeMedida;
import br.com.requisicao.compra.dao.IUnidadeMedidaDAO;
import br.com.requisicao.compra.util.HibernateUtil;


public class UnidadeMedidaDAO implements IUnidadeMedidaDAO {

	public UnidadeMedida salvar(UnidadeMedida unidadeMedida) {
		Session session = HibernateUtil.getSession();
		Transaction tx = session.beginTransaction();
		try {
			session.saveOrUpdate(unidadeMedida);
			tx.commit();
			session.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;

	}

	public UnidadeMedida pesquisarPorId(Long codigo) {
		Session session = HibernateUtil.getSession();
		UnidadeMedida unidadeMedida = null;
		try {
			unidadeMedida = (UnidadeMedida) session.get(UnidadeMedida.class, codigo);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return unidadeMedida;
	}

	public List<UnidadeMedida> obtemUnidadeMedida() {
		Session session = HibernateUtil.getSession();
		List<UnidadeMedida> listaUnidadeMedida = null;
		try {
			listaUnidadeMedida = session.createCriteria(UnidadeMedida.class)
					.addOrder(Order.asc("unidadeMedida")).list();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return listaUnidadeMedida;
	}

	public UnidadeMedida excluir(UnidadeMedida unidadeMedida) {
		Session session = HibernateUtil.getSession();
		Transaction tx = session.beginTransaction();
		try {

			session.delete(unidadeMedida);
			tx.commit();
			session.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;

	}
}
